package com.nanyang.tms.api.service.product;

import com.nanyang.common.core.domain.ApiResult;
import com.nanyang.common.core.page.PageBean;
import com.nanyang.tms.api.dto.request.product.ProductQueryRequest;
import com.nanyang.tms.api.dto.request.product.ProductUpdateStateRequest;
import com.nanyang.tms.api.dto.request.product.add.ProductBaseAddRequest;
import com.nanyang.tms.api.dto.request.product.update.ProductBaseUpdateRequest;
import com.nanyang.tms.api.dto.response.product.ProductBaseResponse;
import com.nanyang.tms.api.dto.response.product.ProductPageKeyResponse;
import com.nanyang.tms.api.dto.response.product.ProductPageResponse;

public interface ProductRpcService {
    /**
     * 列表
     * @param param
     * @return
     */
    ApiResult<PageBean<ProductPageResponse>> listProduct(ProductQueryRequest param);
    /**
     * 模糊列表
     * @param param
     * @return
     */
    ApiResult<PageBean<ProductPageKeyResponse>> listProductByKey(ProductQueryRequest param);
    /**
     *
     * <p>getProductById</p>
     * <p>Description:(根据code获取服务产品详情)</p>
     *
     * @param code
     * @return
     */
    ApiResult<ProductBaseResponse> selectByCode(String code);

    /**
     *
     * <p>saveProduct</p>
     * <p>Description:(保存服务产品)</p>
     *
     * @param param
     * @return
     */
    ApiResult<Boolean> saveProduct(ProductBaseAddRequest param);

    /**
     *
     * <p>updateProduct</p>
     * <p>Description:(修改服务产品)</p>
     *
     * @param param
     * @return
     */
    ApiResult<Boolean> updateProduct(ProductBaseUpdateRequest param);

    /**
     *
     * <p>updateProduct</p>
     * <p>Description:(禁用)</p>
     *
     * @param param
     * @return
     */
    ApiResult<Boolean> disableState(ProductUpdateStateRequest param);
    /**
     *
     * <p>updateProduct</p>
     * <p>Description:(启用)</p>
     *
     * @param param
     * @return
     */
    ApiResult<Boolean> enableState(ProductUpdateStateRequest param);
}
